About Ts

关于

  Typescript是JavaScript类型的超集,可以编译成JavaScript。

主要

 基础类型

  • 布尔值
  • 数字
  • 字符串
  • 数组

    1
    2
    let list: number[] = [1,2,3];
    let list: Array<number> = [1,2,3];
  • 元组 允许表示一个一直元素数量和类型的数组,类型可任意。访问已知索引的元素,类型必须匹配;访问越界的元素,类型需是联合类型,即已知类型的并集。

  • 枚举 enum类型是对JavaScript标准数据类型的一个补充,可以为一组数值赋予友好的名字,默认元素从0开始编号,可指定。
  • Any 对不清楚的变量指定类型,可以避过类型检查,Object也能起到同样作用,但any类型数据可以调用任意方法,Object则不可以。
  • Void 与Any类型相反,表示没有任何类型,函数没有返回值时,返回值类型可以为Void;声明Void类型变量没有实际用处,只能赋值undefined和null。
  • Null和Undefined JavaScript中null和undefined在Ts中分别有类型null和undefined;Null和Undefined是所有类型的子类型。
  • Never 表示永不存在的类型,可以是总会抛出异常或不会有返回值的表达式的返回值类型;是任何类型的子类型。
  • 类型断言 强制给值声明类型。
    1
    2
    3
    let someValue: string = 'hello world';
    let lenOne: number = (<string>someValue).length; // 形式一
    let lenTwo: number = (someValue as string).length; // 形式二

变量声明

  • var
  • let
  • const
  • 上述均可运用解构赋值(解构数组、解构对象、解构函数),属性重命名,默认值,展开
    1
    2
    3
    4
    5
    6
    7
    8
    // 重命名
    let { a: name1, b: name2 } = o; // 等同下
    let name1 = 0.a;
    let name2 = o.b;
    // 函数声明
    function f( { a, b } = { a: '', b: 0}): void {
    // ...
    }

接口

  • 为类型命名,不会检查顺序
  • 可选属性 ?
  • 只读属性 readonly ReadonlyArray ReadonlyStringArray
  • 额外属性检查 当一个对象字面量存在任何目标类型不包含的属性时,会得到错误
  • 函数类型

    1
    2
    3
    4
    5
    6
    7
    8
    interface someValue {
    ( key1: string, key2: string ): boolean
    }
    let someFunc: someValue;
    someFunc = function(param1: string, param2: string) { // 不要求参数命名一致
    let result = param1.search(param2);
    return result > -1;
    }
  • 可索引类型

  • 类类型 当一个类实现一个接口时,只对实例部分进行类型检查,constructor部分属于静态部分,不在检查范围内;

  • constructor
  • extends
  • public
  • private
  • protected
  • readonly
  • get/set
  • static
  • abstract

函数

  • 可选参数
  • 默认参数
  • 剩余参数

泛型

  • 用参数来表示值的类型

枚举

  • enum 可以随意的为复杂的数据类型指定元素的索引

高级类型

  • 交叉类型 &
  • 联合类型 |